Computer networks are ubiquitous in today's society. Common activities such as having a phone conversation, browsing the Internet, processing a computer-based purchase order, tweeting a friend, viewing a YouTube® video, and posting a Facebook® status update are facilitated through use of one or more computer networks. Moreover, future use of computer networks is forecast to increase substantially, as more work and social activities will involve use of cloud-based services.
The most widely used computer network, the Internet, is actually a massive collection of independent smaller packet-switched networks that are interconnected with no central control facility. The lack of a central control facility necessitates that the network switching elements (NSEs, e.g., switches, routers, bridges, etc.) perform dynamic packet-switched routing operations using built-in control logic and routing tables. To facilitate this, various communication protocols have been developed, generally based on the OSI (Open System Interconnection) model, and the NSEs are configured to implement these protocols. OSI defines a seven-layer model including three media layers and four host layers. The media layers comprise a Physical Layer (Layer 1), a Data Link Layer (Layer 2), and a Network Layer (Layer 3), while the host layers comprise a Transport Layer (Layer 4), a Session Layer (Layer 5), a Presentation Layer (Layer 6), and an Application Layer (Layer 7). Media layer functionality is facilitated by the NSEs, while host layer functionality is typically implemented by software running on a host computer. Due to their inherent Network Layer functionality, NSEs are commonly referred to as Layer 3 switches. Under a Layer 3 network architecture, both the control plane and data plane are implemented by the NSEs.
Recently, there has been a greater emphasis on the use of network information flows as opposed to the dynamically determined hop-to-hop packet routing used in Layer 3 networks. While some flow-based routing intelligence has been added to more sophisticated NSEs, the implementation of network flows typically is facilitated through use of a central controller or a distributed set of controllers that are used to control routing operations implemented by the NSEs. Thus, under this network architecture, control plane operations are implemented by the central controller or distributed controllers, while data plane operations remain implemented by the NSEs.